package com.zsj.dao;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;

/**
 * Abstract class（抽象类）：
 *	抽象类是不允许实例化的类，因此需要被进行扩展继承。
 *	在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。
 *	abstract类（抽象类）不能直接用new运算符创建对象！必须产生其子类，由子类创建对象，才可以调用abstract类中的方法。
 *
 * Dao层基类 
 * @author Zsj
 *
 */
public abstract class BaseDao {

	private SqlSessionTemplate sqlSession;

	public SqlSessionTemplate getSqlSession() {
		return sqlSession;
	}

	public void setSqlSession(SqlSessionTemplate sqlSession) {
		this.sqlSession = sqlSession;
	}
	
	public int insert(String key, Object object) {
		return this.getSqlSession().insert(key , object);
	}

	public int delete(String key, String id) {
		return this.getSqlSession().delete(key, id);
	}

	public int update(String key, Object object) {
		return this.getSqlSession().update(key, object);
	}

	public <T> T selectOne(String key, Object object) {
		return this.getSqlSession().selectOne(key, object);
	}

	public <T> List<T> selectList(String key, Object object) {
		return this.getSqlSession().selectList(key, object);
	}
	
	/**
	 *  调用存储过程
	 */
	public <T> T callPro(String key, Object object) {
		return this.getSqlSession().selectOne(key, object);
	}


}
